// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	1/5/2015 11:09:11 PM				
// -----------------------------

#ifndef _TripleOscillator_h
#define _TripleOscillator_h

#include "SoundPlugin.h"

enum class SoundWaveType;
class Oscillator;

class TripleOscillator : public SoundPlugin
{
public:

	Int32			Osc1Coarse;

	Int32			Osc2Coarse;
	Float			Osc2RelativeVolume;
	Float			Osc2PhaseOffset;

	Int32			Osc3Coarse;
	Float			Osc3RelativeVolume;
	Float			Osc3PhaseOffset;

	TripleOscillator(SoundWaveType osc1, SoundWaveType osc2, SoundWaveType osc3);
	virtual ~TripleOscillator();

	virtual Float	Sample(Float frequency, Float amplitude, UInt32 harmonics, Float t) const;

private:

	Oscillator*		m_lpOscillator1;
	Oscillator*		m_lpOscillator2;
	Oscillator*		m_lpOscillator3;

	TripleOscillator(const TripleOscillator& refTripleOscillator);
	TripleOscillator& operator=(const TripleOscillator& refTripleOscillator);
};

#endif